% fig4b.m
% 该脚本并行扫描 (a, b)，对每个点计算最大李雅普诺夫指数 (MLE)，
% 并在 2D (a, b) 参数平面上绘制 MLE 色谱图，以复刻论文中 Fig.4(b) 的效果。

clear; clc; close all;

%% 固定参数
alpha = 2.1;
beta  = 2;
gamma = 2;
Im    = 0.15;
F     = 0.15;

%% (a, b) 扫描范围
Na = 20; Nb = 20;
a_range = linspace(0.57, 0.87, Na);
b_range = linspace(0.35, 0.65, Nb);

%% 设置李雅普诺夫指数计算参数
% T_trans: 舍去瞬态的时间
% T_final: 积分结束时间
% segment: 每段归一化时间，用于 LE 计算中的分段正交化。
T_trans = 100;
T_final = 300;
segment = 1;       % 每段时间长度

%% 分配存储 MLE 的矩阵
MLEMat = zeros(Na, Nb);

%% 并行扫描 (a, b) 计算 MLE
parfor iA = 1:Na
    ai = a_range(iA);
    localMLE = zeros(1, Nb);
    
    for iB = 1:Nb
        bi = b_range(iB);
        
        % 语法: LE_val = LE(a, b, alpha, beta, gamma, Im, F, T_trans, T_final, segment)
        mle_val = LE(ai, bi, alpha, beta, gamma, Im, F, T_trans, T_final, segment);
        localMLE(iB) = mle_val;
    end
    
    MLEMat(iA, :) = localMLE;
end

%% 绘图
figure;

% 使用 imagesc 或 pcolor 均可，imagesc 对规则网格更直观
imagesc(a_range, b_range, MLEMat');
set(gca,'YDir','normal');  % 使 b 从下到上增大

% 轴标签
xlabel('a');
ylabel('b');
title('(a,b) 最大李指数图');

% 根据 MLE 的数值范围，设置合适的颜色映射区间
clim([-0.3, 0.3]);  
colormap(jet); 
colorbar;

